
import time, os
from machine import SPI, Pin
import lib.st7735_buf as st7735_buf
from lib.easydisplay import EasyDisplay
from lib.sdcard import SDCard

# 定义TFT的 CS 和 DC 引脚
tft_cs = Pin(5, Pin.OUT)
tft_dc = Pin(4, Pin.OUT)

# 定义SD 卡的 CS 引脚
sd_cs = Pin(22, Pin.OUT)

# 确保初始状态是高电平，即未选中任何设备
tft_cs.value(1)
sd_cs.value(1)

# 定义一个函数来切换 SPI的从设备
def switch_spi_device(device):
    global spi2
    if device == 'tft':
        tft_cs.value(0)  # 选中 LCD
        sd_cs.value(1)   # 确保 SD 卡未选中
        # 重新初始化LCD
        spi2=SPI(2, baudrate=40000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23))
    elif device == 'sdcard':
        sd_cs.value(0)  # 选中 SD 卡
        tft_cs.value(1)  # 确保 LCD 未选中
        # 重新初始化SD 卡
        spi2=SPI(2, baudrate=40000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))

# 初始化 ST7735 显示屏
def init_lcd():
    switch_spi_device('tft')
    dp = st7735_buf.ST7735(width=160, height=128, spi=spi2, cs=tft_cs, dc=tft_dc, res=19, rotate=1, bl=None, invert=False, rgb=False)
    ed = EasyDisplay(dp, "RGB565", font="/font/text_lite_16px_2312.v3.bmf", show=True, color=0xFFFF, clear=True, auto_wrap=True)
    return ed, dp

# 初始化 SD 卡
def init_sd():
    global sd
    switch_spi_device('sdcard')
    sd = SDCard(spi2, sd_cs)

# 读取SD卡的TXT
init_sd()
os.mount(sd, '/sd')
print("SD card mounted")
f = open("/sd/a.txt", "r") 
read_txt = f.read()  # 读取文件的全部内容
f.close()

# 在显示屏上显示文本信息
ed, dp = init_lcd()  
ed.text(read_txt, 0, 10)